﻿using TestingConcurrencyBenchmark.Problems.ProducerConsumer;

namespace TestingConcurrencyBenchmark.ProblemFactories
{
    internal class ProducerConsumerFactory : IProblemFactory<AbstractProducerConsumer>
    {
        #region IProblemFactory<AbstractProducerConsumer> Members

        public AbstractProducerConsumer GetSolution()
        {
            return new ProducerConsumerSolution();
        }

        public AbstractProducerConsumer GetSolutionWithDeadlock()
        {
            return new ProducerConsumerWithDeadlock();
        }

        public AbstractProducerConsumer GetSolutionWithRaceCondition()
        {
            return new ProducerConsumerWithRaceCondition();
        }

        public AbstractProducerConsumer GetSolutionWithDatarace()
        {
            return new ProducerConsumerWithDataRace();
        }

        #endregion
    }
}